//
//  fuxi.h
//  learnC++
//
//  Created by liuzhibing on 2018/12/26.
//  Copyright © 2018年 yunfan.com. All rights reserved.
//

#ifndef fuxi_h
#define fuxi_h
/*
1、指针当参数置为nil时，置为的是指针的副本为空，不影响外界的指针的值
参考 foundationStep -> funcParamPointer

2、所有的类可以优先统一初始化

3、复制构造函数
Operator overloading->shallow_deep_copy.hpp

4、返回的引用可以直接修改源数据哦
Object relationships->contain_class.hpp
 
5、


*/

#include <string>
#include <iostream>

using namespace std;

class compareStrClass {

public:
  
  compareStrClass(string & str):m_str(str){
    
  }
  
  compareStrClass(char *str){
    m_str = this->charPtrToString(str);
  }
  
  
  //比较
    //比较
  bool compare(char *tempP){
    
    string temp = charPtrToString(tempP);
    
    if(temp.empty() && m_str.empty()){
      return false;
    }
    
    bool result = false;
    
    for(int i = 0;i < m_str.size();i++){
      
        char c = m_str[i];
        char t = temp[0];
      
        if(charCompare(c,t)){
            //equal
            for(int j = 0;j < temp.size();j++){
                bool res = charCompare(m_str[i+j],temp[j]);
                if(!res){
                   break;
                }
              
              if(j == temp.size()-1){
                  return true;
              }
                
            }
        }
    }
      return false;
  }
    
  bool charCompare(char c1, char c2){
     int value1 = (int)c1;
     int value2 = (int)c2;
      
     return (value1 == value2) ? true : false;
  }
    
  string charPtrToString(char *str){
      if(str == nullptr){
        return nullptr;
      }
      return string(str);
  }
    
  
  
private:

string m_str;

};

#endif /* fuxi_h */
